package apuestasWindow;

import java.util.LinkedList;
import java.util.List;

import jugador.Jugador;

import models.ApuestasApplicationModel;

import org.apache.wicket.ajax.AjaxRequestTarget;
import org.apache.wicket.ajax.form.AjaxFormComponentUpdatingBehavior;
import org.apache.wicket.ajax.markup.html.form.AjaxButton;
import org.apache.wicket.extensions.ajax.markup.html.modal.ModalWindow;
import org.apache.wicket.markup.html.WebPage;
import org.apache.wicket.markup.html.basic.Label;
import org.apache.wicket.markup.html.form.Button;
import org.apache.wicket.markup.html.form.DropDownChoice;
import org.apache.wicket.markup.html.form.Form;
import org.apache.wicket.markup.html.form.TextField;
import org.apache.wicket.markup.html.panel.Panel;
import org.apache.wicket.model.PropertyModel;

import applications.ApuestasApplication;
import apuesta.Columna;
import apuesta.Fila;
import apuesta.Impar;
import apuesta.Par;
import apuesta.Paridad;
import apuesta.Pleno;
import apuesta.TipoApuesta;


public class ApuestaPanel extends Panel{
	
	public ApuestaPanel(String id, final WebPage parent, final Jugador j) {
		super(id);
		final Form<ApuestasApplication> formulario = new Form<ApuestasApplication>("formularioPanel");
		formulario.setModel(new ApuestasApplicationModel(j));
		final DropDownChoice<TipoApuesta> apuestas = new DropDownChoice<TipoApuesta>("tiposDeApuesta", new PropertyModel<TipoApuesta>(formulario.getModelObject(), "actual"), formulario.getModelObject().getTiposDeApuesta());
		formulario.setOutputMarkupId(true);
		final DropDownChoice<Object> opcionesApuestas = new DropDownChoice<Object>("opciones", new PropertyModel<Object>(formulario.getModelObject(), "opcion"), formulario.getModelObject().getOpcionesP());
		apuestas.setOutputMarkupId(true);
		opcionesApuestas.setOutputMarkupId(true);
		apuestas.add(new AjaxFormComponentUpdatingBehavior("onchange") {
			
			@Override
			protected void onUpdate(AjaxRequestTarget target) {
				if (formulario.getModelObject().tipoActualEsParOImpar()){
					opcionesApuestas.setVisible(false);
				}
				else{
					opcionesApuestas.setOutputMarkupPlaceholderTag(true); //La gloria... sin esto nunca volvia a aparecer el combobox
					opcionesApuestas.setVisible(true);
					opcionesApuestas.setChoices(formulario.getModelObject().getActual().getOpciones());
					
				}
				target.add(opcionesApuestas);
			}
		});
		formulario.add(new TextField<Integer>("cantFichas", new PropertyModel<Integer>(formulario.getModelObject(),"cantidad")));
		formulario.add(new AjaxButton("aceptar") {
			@Override		
			protected void onSubmit(AjaxRequestTarget target, Form<?> form) {
				formulario.getModelObject().apostar();
				ModalWindow.closeCurrent(target);
			}
			@Override
			protected void onError(AjaxRequestTarget target, Form<?> form) {
			}
        });
		
		//Boton Cancelar
		formulario.add(new AjaxButton("cancelar"){
			@Override
			protected void onSubmit(AjaxRequestTarget target, Form<?> form) {
				ModalWindow.closeCurrent(target);
			}

			@Override
			protected void onError(AjaxRequestTarget target, Form<?> form) {
				// TODO Auto-generated method stub
			}
		});
		
		formulario.add(opcionesApuestas);
		formulario.add(apuestas);
	    add(formulario);
	}
	




	
		
		
		
	

}
